#include "main.h"
#include "public.h"



//
//
//
//
//
////=============== 启动粗扫  初始化参数==========================================
//void run_second(void)
//{
//u16  i;  
//
//
//  
////  gc.u16DC_volt_set = 30;//设置电压gc.s16power_set_val =30;          //设定初扫电压 10-30
////  gc.s32work_volt_K =0;         //清除电压闭环系数 
////  gc.s32ISum=0;                 //当开始扫描时恢电压积分值，避免开机后主动进入初扫
//
//  if (  gc.first_scan_Result_freq >gc.u32first_scan_span_H || gc.first_scan_Result_freq <gc.u32first_scan_span_L )
//  {
//    gc.first_scan_Result_freq = gc.u32sysfreq*gc.Freq_K; 
//  }
//
//  gc.u32second_scan_center = gc.first_scan_Result_freq ;            //精扫 中心频率 
//  gc.u32second_scan_span =80*gc.Freq_K;                       //精扫 +-80hz
//  gc.u32second_scan_span_H = gc.u32second_scan_center+gc.u32second_scan_span;
//  gc.u32second_scan_span_L = gc.u32second_scan_center-gc.u32second_scan_span;
//  
//
//  gc.u32Current_freq=gc.u32second_scan_span_H;        //赋扫描初始值 从高频往低频扫 
//  
//  Freq_update();
//  
//  
//  gc.second_F_Adj_Period = 10;//扫频时调整频率 的时间间隔 ms
//  gc.second_F_Adj_bit = 10;      //扫频时调整 HZ  
//
//
//
//
//  gc.u16Scan_current_1ms_cnt=0;//复位电流检测时间
//
//  gc.delay_ms_cnt =0;         //复位扫频延时
//  gc.delay_time_ms =300;      //粗扫延时300ms 加bit 
//  gc.time_delay_filish =0;    //复位扫频延时 
//  gc.time_delay_filish_last=0;//上个循环延时到了标志
//
//
//  
//
//  gc.u8second_scan_current1_sample_f = 0;//进入扫描时,采样频率上限时的电流值的标志作为靠近谐振点的依据
//  
//  gc.u32second_scan_av_current_max = 0;
//  gc.u32second_scan_av_current_min =300;//进入扫描后移动平均电流值最小值
//  gc.u32second_scan_maxcurrent_freq = gc.u32second_scan_center;//赋初值
//  gc.u32second_scan_mincurrent_freq = gc.u32second_scan_center;//赋初值  
//
//  
//  gc.second_f_val_ref =gc.s16power_set_inter_val;
//  
//
//  gc.u8second_scan_freq_F =0;            // 0未进入谐振范围    1进入谐振范围
//
//  gc.u8second_scan_freq_cnt=0;           //扫频进入谐振范围后定定时加频率，直到低于电流<200 
//
//  for( i=0; i<155; i++ )
//  {
//    gc.u32Adc_CH4[i] = 0;
//  } 
//  for( i=0; i<155; i++ )
//  {
//    gc.u32Adc_CH5[i] = 0;
//  }   
//
//  gc.u8second_scan_en=1;                 //扫频使能
//  
//
////-------------------------------------------------- 
// 
//}
////==============================================================================
//
//
//
//
////==============second===========================================================
//void second_f_adj( void )    //扫频  粗扫阶段 
//{
//static u8  freq_time_cnt=0; 
//static u32  u32CurrentSum=0;
//        u16  i;
//        u16  u16ADC_val;
//        s32 s32av_Sum;
//
//     if( gc.u16Scan_current_1ms_cnt < 1 ) //1ms 扫描一次 ，根据需要调节时间
//     {  return;}
//     gc.u16Scan_current_1ms_cnt = 0;      //清零
//     
//     
//     WAVE_OUTPUT_cmd( ENABLE);  
//  
////========================扫频模式显示默认频率 ，之后显示功率系数  
//     
////------------------------------------------------------------------     
//
//     u16ADC_val  = Read_Adc_value( ADC_Channel_4 );  //切换通道先才一次样丢掉
//     s32av_Sum = 0;      //1ms 进来读一次电流
//     for( i=0; i<4; i++ )
//     {
//         u16ADC_val  = Read_Adc_value( ADC_Channel_4 );  //读通道 PA0的 AD值  电流值
//         s32av_Sum += (u32)u16ADC_val;  //读通道 PA0的 AD值  电流值
//     }
//     gc.s32work_FeedCurrent  = s32av_Sum >>2;           //输出电流   
//        
////--------------------------------移动赋值 ad-----------------------------------      
//     for( i=40; i>1; i-- )
//     {
//        gc.u32Adc_CH4[i-1] = gc.u32Adc_CH4[i-2];
//     }   
//     gc.u32Adc_CH4[0] =gc.s32work_FeedCurrent;          //输出电流
//     
//
////--------------------------------采第一级电流原边电流-----------------------------------------     
//     u16ADC_val  = Read_Adc_value( ADC_Channel_5 );  //切换通道先才一次样丢掉
//     
//     u32CurrentSum = 0;      //1ms 进来读一次电流
//     for( i=0; i<4; i++ )
//     {
//       u16ADC_val  = Read_Adc_value( ADC_Channel_5 );  //读通道 PA0的 AD值  电流值
//       u32CurrentSum += (u32)u16ADC_val;  //读通道 PA0的 AD值  电流值
//     }
//     gc.s32FeedCurrent  = u32CurrentSum /i;
//
////--------------------------------移动赋值 ad-----------------------------------      
//     for( i=40; i>1; i-- )
//     {
//        gc.u32Adc_CH5[i-1] = gc.u32Adc_CH5[i-2];
//     }   
//     gc.u32Adc_CH5[0] =gc.s32FeedCurrent;       //原边电流
//     
//     
//     
//     
//
////----------------------------采ad 可插入电流判断 过流过功率保护----------------
//
//     if ( (gc.u32Adc_CH5[0] +gc.u32Adc_CH5[1])/2 > gc.u16work_max_power*13/10 ) //当连续采样两次平均功率大于最大 -- 功率 -- 限制的1.3倍时进入待机并报错
//     {
//        gc.Work_cmd =0;   //扫频 粗扫失败关机    
//        gc.u32Current_freq = (gc.u32sysfreq+2)*gc.Freq_K;
//        //可在这里置一个故障标志位
//        test_short_press =0;
//        
//
//        err_handle(10011);//追频时过功率 
//        
//        return;     
//     }
//     
//     if (  (gc.u32Adc_CH4[0] +gc.u32Adc_CH4[1])/2  > gc.s32work_FeedCurrent_limit_bit*13/10 ) //当输出电流大于最大 -- 电流 -- 限制的1.3倍时进入待机并报错
//     {
//        gc.Work_cmd =0;   //扫频 粗扫失败关机    
//        gc.u32Current_freq = (gc.u32sysfreq+2)*gc.Freq_K;
//        //可在这里置一个故障标志位
//        test_short_press =0;
//
//        err_handle(10012);//追频时输出过电流
//        return;     
//     }
//
//
////--------------------------延时----------------------------------    
//     time_delay_ms();                 //开机延时300 
//
//      if( gc.time_delay_filish ==1  )     //开机延时完成   
//      {   
//        
//        if (   gc.time_delay_filish_last==0  )//第一次进入
//        {
//          gc.time_delay_filish_last=gc.time_delay_filish;  
//          gc.u32second_scan_current1 = gc.u32Adc_CH4[0]; //延时到了以后,保存这个时候的输出电流值---备用
//            
//          gc.u32second_scan_av_current_min=gc.u32second_scan_current1;
//          gc.u32second_scan_av_current_max=0;
//
////=========================开路检测  待调试 ====================================          
//          if ( gc.u32second_scan_current1 <=0)//30  ) //待调试 确定值和处理方案
//          {
//          gc.Work_cmd =0;   //扫频 粗扫失败关机    
//          gc.u32Current_freq = (gc.u32sysfreq+1)*gc.Freq_K;       
//          test_short_press =0; //清除测试开关指令
//          err_handle(10010);//系统错误值未连接振子
//          return;
//          }        
//        
//        }
//
//          
////------------------------------------ 找最大值并记录 ---------------------------      
//        gc.u32second_scan_av_current_new = ( gc.u32Adc_CH4[0] +gc.u32Adc_CH4[1] )/2;
//        if (gc.u32second_scan_av_current_new > gc.u32second_scan_av_current_max+3 )//延时到了以后,开始找最大值并记录同时记录频率
//        {
//          gc.u32second_scan_av_current_max = gc.u32second_scan_av_current_new;
//          gc.u32second_scan_maxcurrent_freq = gc.u32Current_freq;
//        }
//        
////------------------------------------ 找最小值并记录 ---------------------------  
//        
//        if ( gc.u32second_scan_av_current_min <=10)
//        {
//          gc.u32second_scan_av_current_min=10;
//        }
//        
//
//        if (gc.u32second_scan_av_current_new < gc.u32second_scan_av_current_min-3 )//延时到了以后,开始找最大值并记录同时记录频率
//        {
//          gc.u32second_scan_av_current_min = gc.u32second_scan_av_current_new;
//          gc.u32second_scan_mincurrent_freq = gc.u32Current_freq;
//        }        
//          
////------------------------------------------------------------------------------         
//
//          freq_time_cnt ++;
//          if( freq_time_cnt >= gc.second_F_Adj_Period ) //  2ms 调一次占空比
//          {
//            freq_time_cnt =0;
//
//            second_f_scan();           //调用扫频 
//          }
//    }
//    
////=============================================================================
//}
//
//
//
////===========================粗扫  和结果处理 =================================
//void second_f_scan(void)
//{
//
////   s32 s32av_Sum;     
////   u8  Q_F; //实时相位值 超谐振范围 标志 0超谐振范围1在谐振范围
////========================================================================
//  
//  if (  gc.u8second_scan_freq_F == 0 )
//  {
//    
////=================================过电流=======================================    
//    if( (gc.u32Adc_CH4[0] +gc.u32Adc_CH4[1])/2 > gc.s32work_FeedCurrent_limit_bit*15/10 ) // 
//    {
//      gc.u8second_scan_en=0;     //扫频使能
//      gc.Work_cmd =0;           //扫频 粗扫失败关机    
//      gc.u32Current_freq = (gc.u32sysfreq+1)*gc.Freq_K;       
//      test_short_press =0;//清除测试开关指令
//      err_handle(10003);      
//    }   
//    
//    
////-------------------------修改调整周期 接近谐振点时放慢速度-----------------------------------------
//    if (  ( gc.s32work_FeedCurrent >  gc.s16power_set_inter_val*6/8 &&  gc.s32work_FeedCurrent <  gc.s16power_set_inter_val*10/8 )  ) // +- 1/8
//    {
//      gc.second_F_Adj_Period =5;           //当出现电流大于设定值10%时，调频周期设置为 10ms 进入慢调  
//      gc.Freq_adj_val=5;  
//    }
//    else if (  ( gc.s32work_FeedCurrent >  gc.s16power_set_inter_val*7/8 &&  gc.s32work_FeedCurrent <  gc.s16power_set_inter_val*9/8 )  ) // +- 2/8
//    {
//      gc.second_F_Adj_Period =5;           //当出现电流大于设定值10%时，调频周期设置为 10ms 进入中速调 
//      gc.Freq_adj_val=5;
//    }  
//    else
//    {
//      gc.second_F_Adj_Period =5;           //当出现电流大于设定值10%时，调频周期设置为 10ms 进入快速调 
//      gc.Freq_adj_val=10;
//    }  
////  if(  gc.u8over_power_F==0 )
////  {
////  
////  }
////  else
////  {
////      gc.u16Work_check_time =5;           //当出现电流大于设定值10%时，调频周期设置为 10ms 进入快速调 
////      gc.Freq_adj_val=5;  
////  }    
////    
//    
//    
//    
//    
//    
//    
//    
//        
////=================================扫频扫到头=======================================     
//    if( gc.u32Current_freq  <=  gc.u32second_scan_span_L   ) // 当扫频扫到头还没扫到设定值时 
//    {
//
//        if(  gc.u32second_scan_mincurrent_freq  >=  gc.u32second_scan_span_L+50  && gc.u32second_scan_maxcurrent_freq <=  gc.u32second_scan_span_H+50)//同时不靠近两端极限
//        {
//          
//          gc.u8second_scan_en=0;          //扫频使能
//          gc.second_scan_Result_freq = gc.u32second_scan_maxcurrent_freq;//=======频率定在谐振点右侧75hz处 ，以最大电流时的频率为谐振点
//          gc.s32second_series_parallel_freq_error=gc.u32second_scan_mincurrent_freq -gc.u32second_scan_maxcurrent_freq;//串并联谐振点的频率差
//
//          
//          if ( gc.s32second_series_parallel_freq_error >=50  && gc.s32second_series_parallel_freq_error <=1500     )//当首次烧程序，未设置设备偏移值时 默认为串并联谐振点的差值
//          {
//            if ( gc.s32work_freq_offset == 0    )//当首次烧程序，未设置设备偏移值时 默认为串并联谐振点的差值
//            {
//              gc.s32work_freq_offset=gc.s32second_series_parallel_freq_error;
//              gc.WriteData_delay_cn=0;          //延迟写数据到芯片   暂定30秒
//              gc.WriteData_delay_time =5000;    //延迟写flash的时间 5秒
//              gc.WriteData_filish =0;           //清写完成标志              
//              
//              
//            } 
//            
//            gc.u32Current_freq = gc.u32second_scan_maxcurrent_freq+gc.s32second_series_parallel_freq_error*1/3;// 频率提高到焊头频率宽度的1/4后，50ms 后采相位  ，以最大电流时的频率为谐振点           
//            gc.u8second_scan_freq_F=1;    //扫频进入谐振范围
//            gc.delay_ms_cnt =0;          //复用这个计数器             
//          }
//          else
//          {
//        
//            gc.u8second_scan_en=0;     //扫频使能
//            gc.Work_cmd =0;           //扫频 粗扫失败关机    
//            gc.u32Current_freq = (gc.u32sysfreq+1)*gc.Freq_K;       
//            test_short_press =0;//清除测试开关指令
//            err_handle(10004);      //扫描失败报错 串并联谐振点的频率差不正常           
//            
//          }            
//               
//        }
//        else
//        {
//          gc.u8second_scan_en=0;     //扫频使能
//          gc.Work_cmd =0;           //扫频 粗扫失败关机    
//          gc.u32Current_freq = (gc.u32sysfreq+1)*gc.Freq_K;       
//          test_short_press =0;//清除测试开关指令
//          err_handle(10003);      //系统错误值 没有明显谐振点
//        }
//
//
//    } 
//
//
//    
//
////----------------------- 降频扫描 -------------------------------------   
//    if ( gc.u8second_scan_en==1 )
//    {
//      gc.u32Current_freq -= gc.second_F_Adj_bit; //降频扫描   
//    }
//  
//////----------------------------扫到谐振点右沿---------------------------------------
//    if ( ( gc.u32Adc_CH4[0]
//        +gc.u32Adc_CH4[1] )/2 > gc.second_f_val_ref  )    //当电流 > 设定值,确定为谐振点右侧
//      {
//          gc.u8second_scan_en=0;                             //扫频使能
//          gc.second_scan_Result_freq = gc.u32Current_freq;//=======频率定在谐振点右侧60hz处  以此时的频率为谐振点  
//          gc.s32second_series_parallel_freq_error=gc.u32second_scan_mincurrent_freq -gc.u32second_scan_maxcurrent_freq;//串并联谐振点的频率差
//  //-------------------------判断串并联谐振点频率点差---------------------------------      
//            
//            
//          if ( gc.s32second_series_parallel_freq_error >=50  && gc.s32second_series_parallel_freq_error <=1500     )//当首次烧程序，未设置设备偏移值时 默认为串并联谐振点的差值
//          {
//            if ( gc.s32work_freq_offset == 0    )//当首次烧程序，未设置设备偏移值时 默认为串并联谐振点的差值
//            {
//              gc.s32work_freq_offset=gc.s32second_series_parallel_freq_error;
//              gc.WriteData_delay_cn=0;          //延迟写数据到芯片   暂定30秒
//              gc.WriteData_delay_time =5000;    //延迟写flash的时间 5秒
//              gc.WriteData_filish =0;           //清写完成标志              
// 
//            } 
//            
//            gc.u32Current_freq = gc.u32second_scan_maxcurrent_freq+gc.s32second_series_parallel_freq_error*1/3;// 频率提高到焊头频率宽度的1/4后，50ms 后采相位  ，以最大电流时的频率为谐振点           
//            gc.u8second_scan_freq_F=1;    //扫频进入谐振范围
//            gc.delay_ms_cnt =0;          //复用这个计数器             
//          }
//          else
//          {
//        
//            gc.u8second_scan_en=0;     //扫频使能
//            gc.Work_cmd =0;           //扫频 粗扫失败关机    
//            gc.u32Current_freq = (gc.u32sysfreq+1)*gc.Freq_K;       
//            test_short_press =0;//清除测试开关指令
//            err_handle(10004);      //扫描失败报错 串并联谐振点的频率差不正常           
//            
//          }            
//      }  
//  }
//  
//  else if ( gc.u8second_scan_freq_F==1  ) //以当前频率工作采样相位，因为工作频率在谐振点右侧所以相位应该为负
//  {
////扫频进入谐振范围后定定时加频率，直到低于电流<200 
//    gc.u8second_scan_freq_cnt++;
//    if ( gc.u8second_scan_freq_cnt >3 )
//    {
//      gc.u8second_scan_freq_cnt=0;
//      
//      if (  ( gc.u32Adc_CH4[0] + gc.u32Adc_CH4[1] )/2 > gc.second_f_val_ref  )
//      {
//        gc.u32Current_freq+=10;    
//      }
//    }
//
//
//    if (  gc.delay_ms_cnt < 25   )
//    {
////=======================判断传感器方向=========================================
//      gc.u8current_sense_pn =0;
//      gc.u8second_current_sense_pn = sense_check();              //采极性    
//    }
//    else if ( gc.delay_ms_cnt < 35  )
//    {
//      if ( gc.u8second_current_sense_pn = gc.u8first_current_sense_pn )
//      {
//        gc.u8current_sense_pn=gc.u8second_current_sense_pn;
//      }
//      else
//      {
//        gc.u8current_sense_pn=gc.u8second_current_sense_pn;
//        
//        
//        
//        //当相位采集不正确时可在此插入重新扫描
//
//        
//      }
//      
//      if ( gc.second_scan_Result_freq  >= gc.first_scan_Result_freq -150  &&  gc.second_scan_Result_freq  <= gc.first_scan_Result_freq +150   )
//      {
//        err_handle(665);         //追频正常
//      }
//      else
//      {
//        err_handle(10033);         //追频不正常
//        //当相位采集不正确时可在此插入重新扫描
//      }      
//      
//      if ( gc.s32second_series_parallel_freq_error  >= gc.s32first_series_parallel_freq_error -150  &&  gc.s32second_series_parallel_freq_error  <= gc.s32first_series_parallel_freq_error +150   )
//      {
//        err_handle(665);         //追频正常
//      }
//      else
//      {
//        err_handle(10033);         //追频不正常
//        //当相位采集不正确时可在此插入重新扫描
//      }         
//      
//      
//      
//      
//      
//      
//      gc.Work_cmd =0;   //扫频 粗扫失败关机          
//      test_short_press =0;//清除测试开关指令      
//      
////      gc.u32Current_freq = gc.u32second_scan_mincurrent_freq - 300;
//    }
//    
//    
////    if ( gc.delay_ms_cnt >=40  )
////    {
//
//////=======================采相位=========================================      
////      gc.u8phase_check_index=0;                           //相位检测值指针
////      gc.u8phase_check_times=3;                           //连续相位检测次数      
////
////      while (  gc.u8phase_check_index < gc.u8phase_check_times  ) //==================  采多次相位值
////      {
////        gc.u8work_check_statue=0;       
////        phase_check( ); 
////        gc.s32phase_check_val[gc.u8phase_check_index] = gc.s32time14cnt_val;    
////        gc.u8phase_check_index++;  
////      }
////      gc.s32phase_check_filish =1;//完成采样 
////            
//////===================  数据后处理 ================================================
//////-----------------------判断数据的有效性 并求平均值----------------------------------------
////
////      if (  gc.s32phase_check_filish ==1  )//完成采样 
////      {
////        gc.s32phase_check_filish =0;
////          
////          gc.Work_cmd =0;   //扫频 粗扫失败关机          
////          gc.test_long_press =0;
////          gc.test_short_press =0;//清除测试开关指令
//// 
////      } 
////    }
//  }  
//}
//  
//
//

